<?php
/*
 * Created on 2013-1-21
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
// test('61478365987','8');
//echo date('Y-m-d H:i:s',strtotime("+24 hours"));
//setExpireDateByPhoneNumber('61478376942',date('Y-m-d H:i:s',strtotime("+24 hours")));
function db_connect(){
	if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {  
	   $server='184.154.149.38,1433'; 
	} else {  
	   $server='184.154.149.38:1433'; 
	} 
	$username='vpnadmin';   
	$password='123456';   
	$database='vpnserver';   
	$conn=mssql_connect($server,$username,$password) or die("Couldn't connect to SQL Server on $server");   
	$db=mssql_select_db($database) or die("Couldn't open database $database");
}
/**
 * @param phone_number 手机号
 * @param package_id   套餐ID
 * 根据电话号码和套餐ID重置验证服务器中用户的流量包.
 * 通过更改用户组实现.
 * 新建3G用户使用方法
 */
function updateUser_Group($phone_number,$package_id){
	/*连接验证服务器数据库*/
	db_connect();
	//根据套餐ID指定到服务器上的用户组.
	/*
	 * 基本套餐ID:6	服务器上的对应组是:Moblie 2G	服务器上的对应组ID是:	82
	 * 标准套餐ID:7	服务器上的对应组是:Moblie 5G	服务器上的对应组ID是:71
	 * 商务套餐ID:8	服务器上的对应组是:Moblie 10G	服务器上的对应组ID是:81
	 * 新年特惠套餐ID:9	服务器上的对应组是:Moblie 10G	服务器上的对应组ID是:151
	 */
	if($package_id==6){
		$group_id=502;
	}else if($package_id==7){
		$group_id=505;
	}
	else if($package_id==8){
		$group_id=510;
	}
	else if($package_id==9){
		$group_id=501;
	}
	return excuteUpdateUserGroup($phone_number,$group_id);
}
/**
 * 修改验证服务器上的用户组.
 */
function excuteUpdateUserGroup($phone_number,$group_id){
	db_connect();
	$sql="update t_vpn_user set groupid=".$group_id." where username='".$phone_number."'";
	/*$sql="INSERT INTO [vpnserver].[dbo].[t_vpn_user]([spid], [username], [password], [title],[expiretime],[number],[groupid], [adminid]) 
	VALUES(0, '13855580688', '123456', "."'$title'".", '2013-05-01 00:00:00', 1,  82, 11)";*/
	$i=mssql_query($sql);
	return  $i;
}
/**
 * @param phone_number 手机号
 * 清除某手机号之前使用的流量.
 * 业务要求:当用户退还设备的同时,将该设备重置,清空之前的流量统计.
 * 
 */
function deleteCommonCounter($phone_number){
	/*连接验证服务器数据库*/
	db_connect();
	$sql="delete from t_common_counter where userid=(select id from t_vpn_user where username='".$phone_number."')";
	$i=mssql_query($sql);
	return $i;
}
/**
 * @param string username 中间平台用户名
 * @param string password 中间平台登陆密码
 * @param string title	  描述信息.比如真实姓名
 * @param datetime expiretime 有效期
 * @param int number vpn服务的可连接数
 * @param int groupid 用户组ID
 * 同步创建验证服务器上的用户名密码.
 * 业务需求:当中间平台给某用户分配智能路由的服务时,
 * 不再需要手动添加帐号密码,而是直接通过此方法将中间平台的
 * 登陆帐号和密码直接创建成.
 */
function createUser($username,$password,$title,$expiretime,$number,$groupid){
	db_connect();
	$sql="INSERT INTO [vpnserver].[dbo].[t_vpn_user]([spid], [username], [password], [title],[expiretime],[number],[groupid], [adminid]) 
	VALUES(0, '".$username."', '".$password."', "."'$title'".", '".$expiretime."', ".$number.", ".$groupid.", 11)";
	$i=mssql_query($sql);
	return $i;	
}

/**
 * @param string phone_number
 * 根据电话号码统计某个用户的流量使用情况.
 * total_recv_kb和total_send_kb相加,就可算是已用流量数.单位是字节.处以1024得到单位M.
 */
function countCommonCounter($phone_number){
	db_connect();
	$sql="select  b.id,b.username,sum(a.KBytesRecv) as total_recv_kb,sum(a.KBytesSend) as total_send_kb ,
			(select top 1 nDay from t_common_counter where userid=b.id order by id asc) as from_date ,
			(select top 1 nDay from t_common_counter where userid=b.id order by id desc) as to_date 
			from t_common_counter as a ,t_vpn_user as b 
			where a.userid=b.id and b.username='".$phone_number."' group by b.username,b.id";
	$result=mssql_fetch_array(mssql_query($sql));
//	print_r($result);
	return $result;
}
/**
 * 根据套餐$phone_number查询该用户的剩余流量.
 * 返回结果为剩余流量,单位为G
 */
function leftCommonCounter($phone_number){
	db_connect();
	$sql="select b.id,b.username,sum(a.KBytesRecv) as total_recv_kb,sum(a.KBytesSend) as total_send_kb , " .
			"(select top 1 nDay from t_common_counter where userid=b.id order by id asc) as from_date , " .
			"(select top 1 nDay from t_common_counter where userid=b.id order by id desc) as to_date , " .
			"c.kbspermonth as sper_m 
			from t_vpn_user as b 
			left join t_common_counter as a on a.userid=b.id 
			left join t_vpn_user_group as c on b.groupid=c.id 
			where b.username='".$phone_number."' group by b.username,b.id,c.kbspermonth";
	
	$result=mssql_fetch_array(mssql_query($sql));
	//计算已用总流量并将单位转成M.
	$total=sprintf("%.2f", ($result['total_recv_kb']/1024))+sprintf("%.2f", ($result['total_send_kb']/1024));
	$left=sprintf("%.2f",(sprintf("%.2f", $result['sper_m'])-$total)/1024);
	
	return $left;
}
/**
 * 充值更改用户组
 * 充值成功后更新用户组
 */
function rechargeUpdateUserGroup($phone_number,$package_id){
	/*
	 * 基本套餐ID:6	服务器上的对应组是:Moblie 2G	服务器上的对应组ID是:	82
	 * 标准套餐ID:7	服务器上的对应组是:Moblie 5G	服务器上的对应组ID是:71
	 * 商务套餐ID:8	服务器上的对应组是:Moblie 10G	服务器上的对应组ID是:81
	 * 新年特惠套餐ID:9	服务器上的对应组是:Moblie 1G	服务器上的对应组ID是:151
	 */
	/*
	 * 基本套餐ID:6	服务器上的对应组是:Moblie 2G 	充值后为3G 对应服务器上的对应组ID是:	121
	 * 标准套餐ID:7	服务器上的对应组是:Moblie 5G	充值后为6G 服务器上的对应组ID是:131
	 * 商务套餐ID:8	服务器上的对应组是:Moblie 10G	充值后为11G 服务器上的对应组ID是:141
	 * 新年特惠套餐ID:9	服务器上的对应组是:Moblie 1G	充值后为2G 服务器上的对应组ID是:82
	 */
	 //此处18 19 20 是充值套餐ID
	 if($package_id == 18){	//1GB
		$number = 1;
	 }else if($package_id == 19){	//2GB
		$number = 2;
	 }else if($package_id == 20){	//3GB
		$number = 3;
	 }
	 
	 $gourp_id=getUserGroupByPhoneNumber($phone_number);
	 
	 if($gourp_id>0){
	 	
		$new_group_id = $gourp_id + $number;
		
	 }
	return excuteUpdateUserGroup($phone_number,$new_group_id);
}
/**
 * 根据手机号获取用户组
 */
function getUserGroupByPhoneNumber($phone_number){
	db_connect();
	$sql="select top 1 a.groupid from t_vpn_user as a where a.username='$phone_number'";
	$result=mssql_fetch_array(mssql_query($sql));
	return $result['groupid'];
}
/**
 * 根据手机号设置有效期
 */
function setExpireDateByPhoneNumber($phone_number,$expiredate){
	db_connect();
	$sql="update t_vpn_user set expiretime='$expiredate' where username='$phone_number'";
	$i=mssql_query($sql);
	return $i;	
}
?>
